/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package moteur;

import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;


/**
 *
 * @author Administrateur
 */

//ATTENTION!! ORDRE DE DECLARATION SUPER IMPORTANT! PAS TOUCHE!

public enum Transport {
    //TYPE          Desert      Foret   Montagne    Plaine  Aqueu

    ANE         ((byte) 2, (byte) 1, (byte) 1, (byte) 127, (byte) 127,      ("images/ane.png")),
    SANGLIER    ((byte) 127, (byte) 1, (byte) 127, (byte) 1, (byte) 127,    ("images/sanglier.png")),
    VELO        ((byte) 127, (byte) 1, (byte) 2, (byte) 1, (byte) 127,      ("images/velo.png")),
    TRACTEUR    ((byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 127,        ("images" + File.separator + "tracteur.png")),
    MOBYLETTE   ((byte) 127, (byte) 2, (byte) 1, (byte) 2, (byte) 127,      ("images" + File.separator + "mobylette.png")),
    ULM         ((byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 127,        ("images" + File.separator + "ulm.png")),
    KAYAK       ((byte) 127, (byte) 127, (byte) 127, (byte) 127, (byte) 2,  ("images" + File.separator + "kayak.png")); //Cas spécial: 1, gérer ailleurs, comme l'obstacle

    private final byte[] couts = new byte[Terrain.values().length]; // parce que 8 bits sont plus qu'assez pour stocker 0,1, ou 2.
    private Image image;
    private static Image defaut;

    @SuppressWarnings("static-access")
    Transport(byte desert, byte foret, byte montagne, byte plaine, byte aqueu, String img) {

       // this.couts = new byte[Terrain.values().length];
        this.couts[Terrain.DESERT.ordinal()] = desert;
        this.couts[Terrain.FORET.ordinal()] = foret;
        this.couts[Terrain.MONTAGNE.ordinal()] = montagne;
        this.couts[Terrain.PLAINE.ordinal()] = plaine;
        this.couts[Terrain.AQUEU.ordinal()] = aqueu;
            /*
            File test = new File("");
            File test2 = new File("images" + File.separator + "defaut.png");
            System.out.println(test.getPath());
            System.out.println(test2.getPath());
            System.out.println(test.getAbsolutePath());
            System.out.println(test2.getAbsolutePath());
        //*/
        try {         
            image = ImageIO.read(new File(getClass().getResource(img).getFile()));
        } catch (IOException ex) {
            //Logger.getLogger(Transport.class.getName()).log(Level.SEVERE, null, ex);
        }
           
    }

    /**
     * Récupere le cout (en nombre decarte transport du même type) de traversé de ce terrain.
     * @param t
     * @return
     */
    public int getCout(Terrain t)   {
        return couts[t.ordinal()];
    }
    
    /**
     * Récupere l'image, pour l'affichage.
     * @return
     */
    public Image getImage(){
        return image;
    }

    public static Image getImageDefaut(){
        if (defaut == null){
            try {
                defaut = ImageIO.read(new File("images" + File.separator + "defaut.png"));
            } catch (IOException ex) {
                Logger.getLogger(Transport.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return defaut;
    }
}
